查看原文
其他

一个由 “YYYY-MM-dd” 引发的惨案 !元旦来临前警惕~

Java精选 2022-08-09

点击上方“Java精选”,选择“设为星标”

别问别人为什么,多问自己凭什么!

下方有惊喜留言必回,有问必答!

每天 08:15 更新文章,每天进步一点点...

前言

在元旦假期到来之际,我刚好准备出去飘几天,然而在使用一些 App 的时候,竟然被我发现了一个应该是由于前端粗心而导致的 bug,在 2019.12.30 出发,结果 App 上显示的是 2020.12.30(吓得我以为我的订单下错了,此处是不是该把程序员拉去祭天了)。

鉴于可能会有程序员因此而被拉去祭天,而我以前学 Java 的时候就有留意过这个问题,所以我还是把这个问题拿出来说一下,希望能尽量避免这方面的粗心大意(毕竟这种问题也很难测出来)。

正文

public class DateTest {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(2019, Calendar.AUGUST, 31);
        Date strDate = calendar.getTime();
        DateFormat formatUpperCase = new SimpleDateFormat("yyyy-MM-dd");
        System.out.println("2019-08-31 to yyyy-MM-dd: " + formatUpperCase.format(strDate));
        formatUpperCase = new SimpleDateFormat("YYYY-MM-dd");
        System.out.println("2019-08-31 to YYYY/MM/dd: " + formatUpperCase.format(strDate));
    }
}

我们来看下运行结果:

2019-08-31 to yyyy-MM-dd: 2019-08-31
2019-08-31 to YYYY/MM/dd: 2019-08-31

如果我们日期改成 12.31:

2019-12-31 to yyyy-MM-dd: 2019-12-31
2019-12-31 to YYYY-MM-dd: 2020-12-31

问题就出现了是吧,虽然是一个小小的细节,但是用户看了也会一脸懵,但是我们作为开发者,不能懵啊,赶紧文档查起来:

y:year-of-era;正正经经的年,即元旦过后;Y:week-based-year;只要本周跨年,那么这周就算入下一年;就比如说今年(2019-2020) 12.31 这一周是跨年的一周,而 12.31 是周二,那使用 YYYY 的话会显示 2020,使用 yyyy 则会从 1.1 才开始算是 2020。

这虽然是个很小的知识点,但是也有很多人栽到坑里,各位学完可以记录一下咯,觉得好的还可以点个赞关注一下。我在这里祝愿各位码代码时如有神助,永远没有 bug~

版权声明:本文为CSDN博主「6曦轩」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

https://blog.csdn.net/weixin_42669785/article/details/103972652

众号“Java精选”所发表内容注明来源的,版权归原出处所有(无法查证版权的或者未注明出处的均来自网络,系转载,转载的目的在于传递更多信息,版权属于原作者。如有侵权,请联系,笔者会第一时间删除处理!
------ THE END ------

精品资料,超赞福利!


3000+ 道 BAT 大厂面试题在线刷,最新、最全 Java 面试题!

☆ Java进阶学习资料
 Java自学、进阶路线图免费领

期往精选  点击标题可跳转

没完了!刚升级 Log4j 2.16.0,又爆 DOS 攻击漏洞,升级到 2.17.0 可解决!

警告!VPN “翻墙”被抓了!已大规模行政处罚!

推荐一款神仙颜值的 Redis 客户端工具

面试官问:你的缺点是什么,这么回答漂亮!(真实案例)

一个员工的离职成本有多恐怖?

互联网大厂裁员名单!中国互联网寒冬的根本原因是什么?

知乎热议话题:国内卷了!欧洲为什么能突破内卷?

Java 18 都要来了,你不会还在用 Java 8 吧?

技术交流群!

最近有很多人问,有没有读者&异性交流群,你懂的!想知道如何加入。加入方式很简单,有兴趣的同学,只需要点击下方卡片,回复“加群”,即可免费加入交流群!

文章有帮助的话,在看,转发吧!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存